#include <iostream>
#include <cstdlib>
#include <queue>
using namespace std;
/* 
判断二叉树是不是完全二叉树
 */
typedef struct binode
{
    int data;
    struct binode *lchild;
    struct binode *rchild;
} binode, *bitree;
/* 
根据二叉树的定义，使用层序遍历二叉树，将所有结点（包含空结点）加入队列
遇到空结点时，判断其后是否有非空结点，如果有则不是完全二叉树 */
bool sub(bitree t)
{
    queue<bitree> q;
    bitree p;
    if (!t)
    {
        // 空树也是满二叉树
        return true;
    }
    q.push(t);
    while (!q.empty())
    {
        p = q.front();
        q.pop();
        if (p)
        {
            q.push(p->lchild);
            q.push(p->rchild);
            /* code */
        }
        else
        {
            while (!q.empty())
            {
                p = q.front();
                q.pop();
                if (p)
                {
                    return false;
                    /* code */
                }

                /* code */
            }
        }
        /* code */
    }
}
int main(int argc, char const *argv[])
{

    return 0;
}
